SQL dotaz - prvni vetsi

Otázka od: Daniel Dedek

8. 1. 2004 15:46


 prosim pomozte kdo umite v SQL

 Mam ta tabulku se sloupci, jeden z nich je Datum.
 Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.

 Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.

 diky moc za pripadnou pomoc,

 Dan Dedek


Odpovedá: Jan Fiala

8. 1. 2004 17:39

8.1.2004 Daniel Dedek:

> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.

> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.

Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
select Top 1 * from tabulka where datum > hodnota


--
Jan Fiala
mailto:jan.fiala@wo.cz


Odpovedá: Burkovsky Ladislav

8. 1. 2004 17:27

vytriedit, sortnut a
podla databazovy existuje nieco ako top, first a pod. na vratenie prveho
zaznamu

laco

 Mam ta tabulku se sloupci, jeden z nich je Datum.
 Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka
hodnota.

 Dan Dedek



Odpovedá: Daniel Dedek

8. 1. 2004 17:36

>> Mam ta tabulku se sloupci, jeden z nich je Datum.
>> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez
>nejaka hodnota.
>
>Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
>select Top 1 * from tabulka where datum > hodnota
>Jan Fiala

 aha, je to mySQL. Prochazim manual a "top" nemuzu najit.

 Taky jsem zkousel konstrukci

SELECT * FROM tabulka WHERE datum = (SELECT MIN(datum) FROM tabulka WHERE
datum > hodnota)

 ale nebere mi to syntaxi

 Dan Dedek


Odpovedá: Vlastimil Zdenek

8. 1. 2004 17:36

> 8.1.2004 Daniel Dedek:
>
> > Mam ta tabulku se sloupci, jeden z nich je Datum.
> > Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka
hodnota.
>
> > Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a
pak
> > bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
>
> Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
> select Top 1 * from tabulka where datum > hodnota
>
>
> --
....dovolil bych si doplnit na toto:
select Top 1 * from tabulka where datum > hodnota
ORDER BY Datum



Odpovedá: Petr Daricek

8. 1. 2004 17:16

Melo by to jit nejak takhle, ale nepamatuji si presny format Order by a Limit.

Select * From tabulka Where Date>hodnota Order by date Limit (0,1);

Proste to setridis podle datumu a pak vyberes jenom prvni prvek, ktery vyhovuje
podmince.

             Petr Daricek

================= Puvodni zprava =================
Od (From): "Daniel Dedek" <admin2.ok.prague@embassy.mzv.cz>
Komu (To): delphi-l@clexpert.cz
Kopie (Cc):
Predmet (Subject): SQL dotaz - prvni vetsi
Datum (Date): 8. 1. 2004 15:45
==================================================

>
> prosim pomozte kdo umite v SQL
>
> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
>
> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
>
> diky moc za pripadnou pomoc,
>
> Dan Dedek
>
>
>

____________________________________________________________
Licitovat nejvyhodnejsi nabidku je postavene na hlavu! Skoda Octavia nyni se
zvyhodnenim az 90.000 Kc!
http://ad2.seznam.cz/redir.cgi?instance=68740%26url=http://www.skoda-
auto.cz/action/fast

Odpovedá: Vlastimil Bardon

8. 1. 2004 18:11

Obavam se, ze takto to nebude fungovat spravne - on chtel nejblizsi vyssi takze

nejblizsi vyssi datum je:
select min(datum) from tabulka where datum > hodnota

cely zaznam bud

select top 1 *
from tabulka
where datum > hodnota
order by datum

.... nebo, pokud je datum jednoznacne tak

select *
from tabulka
where datum = ( select min(datum) from tabulka where datum > hodnota )

nebo ja bych radeji pouzil

declare @datum datetime
select @datum = min(datum) from tabulka where datum > hodnota
select *
from tabulka
where datum = @datum

.... pokud ale datum neni jednoznacne, tak je to de fakto neresitelne, protoze
neexistuje jen jeden jediny datum nejblizsi vyssi danemu datumu, takze
algoritmus 1 sice bude opticky fungovat, ale ve skutecnosti neda presne ten
vysledek, ktery kolega chtel. Proto bych dal prednost algoritmum 2 a 3, ktere
mu v pripade nejednoznacnosti vrati VSECHNY radky, ktere vyhovuji podmince.

-----Original Message-----
From: Jan Fiala [mailto:jan.fiala@wo.cz]
Sent: Thursday, January 08, 2004 3:52 PM

> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.

> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.

Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
select Top 1 * from tabulka where datum > hodnota


Odpovedá: Jakub Dusek

8. 1. 2004 17:19

Taky cesta (aspon na Oraclu by tohle chodilo), ale jestli se ti v
tomhle nepletou ty tabulky, respektive jejich pole. Druhou bych
prejmenoval a pouzival nazvy tabulek pred nazvy poli:

SELECT * FROM tabulka
WHERE tabulka.datum =
(SELECT MIN(tabulka2.datum) FROM tabulka tabulka2
 WHERE tabulka2.datum > hodnota)

Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
     => Sms GateKeeper, Sms GateKeeper Service

======================================================================
Thursday, January 8, 2004, 4:15:32 PM, you wrote:

DD> Taky jsem zkousel konstrukci

DD> SELECT * FROM tabulka WHERE datum = (SELECT MIN(datum) FROM
DD> tabulka WHERE datum > hodnota)

DD> ale nebere mi to syntaxi


Odpovedá: Mirek Mrakota

8. 1. 2004 18:14

Ahoj,

vzdyt sis skoro odpovedel sam  :

Select TOP 1 * from tabulka where datum > porovnavacidatum

to plati pro MSSQL, pro MySQL by to bylo:

SELECT * form tabulka where datum > porovnavacidatum LIMIT 1

Mirek...

----- Original Message -----
From: "Daniel Dedek" <admin2.ok.prague@embassy.mzv.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, January 08, 2004 9:45 AM
Subject: SQL dotaz - prvni vetsi


>
> prosim pomozte kdo umite v SQL
>
> Mam ta tabulku se sloupci, jeden z nich je Datum.
> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
>
> Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
>
> diky moc za pripadnou pomoc,
>
> Dan Dedek
>
>
>
>
>
> __________ Informace od NOD32 1.594 (20040107) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
> http://www.nod32.cz
>
>

Odpovedá: Slavomir Skopalik

8. 1. 2004 18:18

Myslim, ze tam chybi ORDER.
Jinak na Firebirdu/Interbase pouzivam tohle:

SELECT FIRST 1 ... FROM ... WHERE tdate <:from ...
ORDER BY tDate

Bez toho ORDER BY to opravdu nefunguje (na FB a IB).

 Slavek

> Ahoj,
>
> vzdyt sis skoro odpovedel sam  :
>
> Select TOP 1 * from tabulka where datum > porovnavacidatum
>
> to plati pro MSSQL, pro MySQL by to bylo:
>
> SELECT * form tabulka where datum > porovnavacidatum LIMIT 1
>
> Mirek...
>
> ----- Original Message -----
> From: "Daniel Dedek" <admin2.ok.prague@embassy.mzv.cz>
> To: <delphi-l@clexpert.cz>
> Sent: Thursday, January 08, 2004 9:45 AM
> Subject: SQL dotaz - prvni vetsi
>
>
> >
> > prosim pomozte kdo umite v SQL
> >
> > Mam ta tabulku se sloupci, jeden z nich je Datum.
> > Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez nejaka hodnota.
> >
> > Slo by to udelat jako "vyber vse s vyssim datumem a setrid dle data" a pak
> > bych si sahnul po poslednim zaznamu, ale snad to jde i primo v SQL.
> >
> > diky moc za pripadnou pomoc,
> >
> > Dan Dedek
> >
> >
> >
> >
> >
> > __________ Informace od NOD32 1.594 (20040107) __________
> >
> > Tato zprava byla proverena antivirovym systemem NOD32.
> > http://www.nod32.cz
> >
> >
>
>
>

Odpovedá: Mirek Mrakota

8. 1. 2004 18:31

MySQL nepodporuje vnorene selecty, takze musis pouzit:

SELECT * FROM tabulka WHERE datum > porovnavacidatum ORDER BY datum LIMIT 1

> >> Mam ta tabulku se sloupci, jeden z nich je Datum.
> >> Potrebuju vybrat zaznam, ktery ma nejblizsi vyssi datum nez
> >nejaka hodnota.
> >
> >Protoze nepises, na jakem SQL, uvedu priklad pro MS SQL:
> >select Top 1 * from tabulka where datum > hodnota
> >Jan Fiala
>
> aha, je to mySQL. Prochazim manual a "top" nemuzu najit.
>
> Taky jsem zkousel konstrukci
>
> SELECT * FROM tabulka WHERE datum = (SELECT MIN(datum) FROM tabulka WHERE
> datum > hodnota)
>
> ale nebere mi to syntaxi
>
> Dan Dedek
>
>
>
>
>
>
> __________ Informace od NOD32 1.594 (20040107) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
> http://www.nod32.cz
>
>